#include <iostream>
#include <string>

using namespace std;

void test()
{
    int a = 1;
    // 原码：0000 0000 0000 0001
    // 补码：0000 0000 0000 0001

    // 取反：1111 1111 1111 1110        新的补码
    // 无符号取：1111 1111 1111 1110
    // 有符号取：1000 0000 0000 0010  -2

    int a1 = ~a;
    cout << a1 << endl;
    printf("%u\n", a1);
    int a2 = a & 1;
    if (a2 == 1)
    {
        cout << "jishu" << endl;
    }
    else
    {
        cout << "oushu" << endl;
    }

    cout << a << endl;

// 通过按位异或的方式，交换两个变量的值

    int b = 2;
    int c = 3;

    b = b ^ c;
    c = b ^ c;
    b = b ^ c;
    
    cout << b << " " << c << endl;

// 不同过temp的方式，交换两个变量的值
    b = b + c;
    c = b - c;
    b = b - c;

    cout << b << " " << c << endl;
}

int main()
{
    test();
    return 0;
}
